package org.eiahe.hr.salary.enums;

/**
 * 薪资模块常量定义
 *
 * @author zhangnn
 */
public class SalaryConstants {

    /**
     * 发放状态
     */
    public enum PaymentStatus {
        /**
         * 未发放
         */
        NOT_PAID("0"),
        /**
         * 已发放
         */
        PAID("1");

        private final String code;

        PaymentStatus(String code) {
            this.code = code;
        }

        public String getCode() {
            return code;
        }
    }

    /**
     * 领取状态
     */
    public enum ReceiveStatus {
        /**
         * 未领取
         */
        NOT_RECEIVED("0"),
        /**
         * 已领取
         */
        RECEIVED("1");

        private final String code;

        ReceiveStatus(String code) {
            this.code = code;
        }

        public String getCode() {
            return code;
        }
    }

    /**
     * 审批状态
     */
    public enum ApprovalStatus {
        /**
         * 待审批
         */
        PENDING("0"),
        /**
         * 审批通过
         */
        APPROVED("1"),
        /**
         * 审批拒绝
         */
        REJECTED("2");

        private final String code;

        ApprovalStatus(String code) {
            this.code = code;
        }

        public String getCode() {
            return code;
        }
    }

    /**
     * 验证状态
     */
    public enum VerificationStatus {
        /**
         * 未验证
         */
        NOT_VERIFIED("0"),
        /**
         * 已验证
         */
        VERIFIED("1");

        private final String code;

        VerificationStatus(String code) {
            this.code = code;
        }

        public String getCode() {
            return code;
        }
    }

    /**
     * 社保类型
     */
    public enum InsuranceType {
        /**
         * 养老保险
         */
        PENSION("pension", "养老保险"),
        /**
         * 医疗保险
         */
        MEDICAL("medical", "医疗保险"),
        /**
         * 失业保险
         */
        UNEMPLOYMENT("unemployment", "失业保险"),
        /**
         * 工伤保险
         */
        WORK_INJURY("work_injury", "工伤保险"),
        /**
         * 生育保险
         */
        MATERNITY("maternity", "生育保险");

        private final String code;
        private final String name;

        InsuranceType(String code, String name) {
            this.code = code;
            this.name = name;
        }

        public String getCode() {
            return code;
        }

        public String getName() {
            return name;
        }
    }

    /**
     * 奖金类型
     */
    public enum BonusType {
        /**
         * 年终奖
         */
        YEAR_END_BONUS("year_end_bonus", "年终奖"),
        /**
         * 季度奖
         */
        QUARTERLY_BONUS("quarterly_bonus", "季度奖"),
        /**
         * 项目奖
         */
        PROJECT_BONUS("project_bonus", "项目奖"),
        /**
         * 绩效奖
         */
        PERFORMANCE_BONUS("performance_bonus", "绩效奖");

        private final String code;
        private final String name;

        BonusType(String code, String name) {
            this.code = code;
            this.name = name;
        }

        public String getCode() {
            return code;
        }

        public String getName() {
            return name;
        }
    }

    /**
     * 记录类型
     */
    public enum RecordType {
        /**
         * 薪资记录
         */
        SALARY("salary", "薪资记录"),
        /**
         * 调薪记录
         */
        ADJUSTMENT("adjustment", "调薪记录");

        private final String code;
        private final String name;

        RecordType(String code, String name) {
            this.code = code;
            this.name = name;
        }

        public String getCode() {
            return code;
        }

        public String getName() {
            return name;
        }
    }
}